from PySide6.QtCore import Qt
from PySide6.QtGui import QPen, QBrush, QPainterPath
from PySide6.QtWidgets import QGraphicsPathItem


class 箭头(QGraphicsPathItem):
    def __init__(self, 大小=20, 颜色=Qt.green, 样式="圆球",父项=None):
        super().__init__(父项)
        self.大小 = 大小
        self.颜色 = 颜色
        self.样式 = 样式
        self.setPen(QPen(self.颜色))
        self.setBrush(QBrush(self.颜色))
        self.更新形状()
        self.setZValue(3)

    def 更新形状(self):
        """
        根据当前样式更新形状。
        """
        if self.样式 == "箭头":
            self.setPath(self.创建箭头路径())
        elif self.样式 == "圆球":
            self.setPath(self.创建圆球路径())

    def 创建箭头路径(self):
        """
        创建箭头的形状路径。
        """
        路径 = QPainterPath()
        路径.moveTo(0, 0)
        路径.lineTo(-self.大小, self.大小 / 2)
        路径.lineTo(-self.大小 * 0.6, 0)
        路径.lineTo(-self.大小, -self.大小 / 2)
        路径.closeSubpath()
        return 路径

    def 创建圆球路径(self):
        """
        创建圆球的形状路径。
        """
        路径 = QPainterPath()
        路径.addEllipse(-self.大小 / 2, -self.大小 / 2, self.大小, self.大小)
        return 路径

    def 设置样式(self, 新样式):
        """
        切换箭头的样式。
        """
        self.样式 = 新样式
        self.更新形状()
